package me.mingshan.leetcode;

/**
 * https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/
 *
 *
 *
 * @author hanjuntao
 * @date 2025/8/28 0028
 */
public class L_104_二叉树的最大深度 {

    public static void main(String[] args) {
        TreeNode root = new TreeNode(3);
        root.left = new TreeNode(9);
        root.right = new TreeNode(20);
        root.right.left = new TreeNode(15);
        root.right.right = new TreeNode(7);
        
        System.out.println(maxDepth(root));
    }

    /**
     * 如果要求树的深度，
     *
     * 我们只需要知道树的左右子树的深度，然后取最大值，然后加上当前节点的深度1，就是当前节点的深度。
     *
     * 递归实现
     * maxDepth = Math.max(leftDepth, rightDepth) + 1
     *
     * @param root
     * @return
     */
    private static int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }

        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }

}
